package com.boer.filedemo.controller;

import com.boer.filedemo.entity.MyFile;
import com.boer.filedemo.service.MyFileService;
import com.boer.filedemo.utils.CommonUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

/***
 * 上传文件接口
 */
@Controller
public class UploadController {
    @Autowired
    MyFileService service;

    //上传接口，参数为文件类型
    @PostMapping("/uploadFile")
    @ResponseBody
    public String upload(@RequestParam("file") MultipartFile file) {
        if (file.isEmpty()) {
            return "上传失败，请选择文件，返回上一步";
        }

        String uuid = CommonUtils.generateUUID();
        // 获得文件原始名称
        String fileName = file.getOriginalFilename();
        // 获得文件后缀名称
        String suffixName = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
        // 生成最新的uuid文件名称
        String newFileName = uuid + "." + suffixName;

        // 这需要填写一个本地路径，用于存放上传文件，尾部不要有 \\
        String filePath = "D:\\Boer\\test";
        //生成当前时间字符串
        Date now = new Date();
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
        String time = dateFormat.format(now);

        //按照日期保存至目录
        File dateDir = new File(filePath + "\\" + time);
        if (!dateDir.exists()) { //如果文件夹不存在
            System.out.println("notExist");
            dateDir.mkdir(); //创建文件夹
        }

        //文件最终存放地址
        //System.out.println(dateDir.getAbsolutePath());
        File dest = new File(dateDir.getAbsolutePath() + "\\" + newFileName);
        //System.out.println(dest.getAbsolutePath());

        try {
            //文件传送至dest
            file.transferTo(dest);

            //将文件元数据存放至数据库
            MyFile myFile = new MyFile();
            myFile.setName(fileName);
            myFile.setUuid(uuid);
            myFile.setSize(String.valueOf(file.getSize()));
            myFile.setType(file.getContentType());
            myFile.setPath(dest.getAbsolutePath());
            service.save(myFile);
            return "上传成功,uuid=" + uuid + ",请复制uuid";
        } catch (IOException e) {
            e.printStackTrace();
        }
        return "上传失败！";
    }

}
